﻿using Layans.Data;
using Api.Models;
using Api.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebMatrix.WebData;

namespace Api.Controllers.Group
{
    //public class GroupPostFirstController : Controller
    //{
    //    const int PageSize = 30;

    //    private LayansContext db = new LayansContext();
    //    //
    //    // GET: /GroupPostFirst/
    //    public ActionResult Index()
    //    {
    //        return View();
    //    }

    //    [Authorize]
    //    [HttpPost]
    //    [ValidateAntiForgeryToken]
    //    private ActionResult CreateGroup (GroupInfo groupInfo)
    //    {
    //        var create = new GroupInfo
    //        {
               
    //        };

    //        return Redirect("/");
    //    }

    //    [Authorize]
    //    [HttpPost]
    //    [ValidateAntiForgeryToken]
    //    public ActionResult DoCreate(PostsGroup groupPost)
    //    {
    //        var user = db.Author.FirstOrDefault(x => x.UserId == WebSecurity.CurrentUserId);
    //        var post = new PostsGroup
    //                    {
    //                        Content = Server.HtmlDecode(groupPost.Content),
    //                        Author = user,
    //                        avatar = avatar,
    //                        CreationTime = DateTime.Now,
    //                    };
    //        db.PostsGroups.Add(post);
    //        db.SaveChanges();
    //        return Redirect("/");

    //    }

    //    [Authorize]
    //    [HttpPost]
    //    [ValidateAntiForgeryToken]
    //    public ActionResult ViewPost(int Id)
    //    {
    //        if(!db.PostsGroups.Any(x => x.Id == Id))
    //        {
    //            return Redirect("/");
    //        }

    //        var post = db.PostsGroups.Where(x => x.Id == Id)
    //            .Select(x => new FullGroupPostViewModel
    //                {
    //                    Id = x.Id,
    //                    Content = x.Content,
    //                    CreationTime = x.CreationTime,
    //                    Username = x.Authors,
    //                    avatar = x.avatars,
    //                }).SingleOrDefault();

    //        post.Answers = db.GroupPostAnswers.Where(x => x.ForumPost.Id == Id)
    //            .Select(y => new GroupPostAnswerViewModel
    //            {
    //                Content = y.Content,
    //                CreationTime = y.CreationTime,
    //                Username = y.Authors,
    //                avatar = y.avatars,
    //            });

    //        return View(post);
    //    }

    //    [Authorize]
    //    [HttpPost]
    //    [ValidateAntiForgeryToken]
    //    public ActionResult CreateAnswer(int groupPostId, string content)
    //    {
    //        var user = db.Author.FirstOrDefault(x => x.UserId == WebSecurity.CurrentUserId);
    //        var groupPost = db.PostsGroups.FirstOrDefault(x => x.Id == groupPostId);

    //        db.GroupPostAnswers.Add(
    //            new GroupPostAnswer() 
    //            {
    //                Author = user,
    //                avatar = avatar,
    //                CreationTime = DateTime.Now,
    //                Content = Server.HtmlDecode(content),
    //                ForumPost = groupPost,
    //            });
    //        db.SaveChanges();

    //        return Redirect("/Group/" + groupPostId);
    //    }

    //    [Authorize]
    //    [ValidateAntiForgeryToken]
    //    public ActionResult Vote(int id)
    //    {
    //        if(!db.GroupPostVotes.Any(x => x.Post.Id == id  && x.User.UserId  == WebSecurity.CurrentUserId))
    //        {
    //            var currentEntry = db.GroupPostVotes.SingleOrDefault(x => x.Post.Id == id && x.User.UserId == WebSecurity.CurrentUserId);
    //            currentEntry.UpVote = true;
    //            db.SaveChanges();
    //        }

    //        else
    //        {
    //            var user = db.Author.FirstOrDefault(x => x.UserId == WebSecurity.CurrentUserId);
    //            var groupPost = db.GroupPosts.FirstOrDefault(x => x.Id == id);
    //            db.GroupPostVotes.Add(new GroupPostVote()
    //                {
    //                    Post = groupPost,
    //                    User = user,
    //                    UpVote = true,
    //                });

    //            db.SaveChanges();
    //        }
    //        int rating = db.GroupPostVotes.Count(y => y.Post.Id == id && y.UpVote);

    //        return Content(rating.ToString());
    //    }
    //    public Avatar avatar { get; set; }
    //}
}